/* ************************************************************************

   Copyright: Juan Antonio Aldea Armenteros

   License: GPL v3

   Authors: Juan Antonio Aldea Armenteros

************************************************************************ */

qx.Class.define("jabber.Pestaniero",
{
  extend : qx.ui.tabview.TabView,
  events : { "enviarMensaje" : "qx.event.type.Data" },

  construct : function(jid)
  {
    this.base(arguments);
    this.__contactos = new jabber.Contactos(jid);

    this.__contactos.addListener("crear_ventana", function(e)
    {
      this.debug("conversaciones");
      var data = e.getData();
      var conversacion = this.buscarConversacion(data.jid);

      if (conversacion == null) {
        conversacion = this.addConversacion(data.jid, data.nombre);
      }

      this.focusConversacion(conversacion);
    },
    this);

    this.debug("constructor de conversaciones");
    var page = new qx.ui.tabview.Page(jid);
    page.setLayout(new qx.ui.layout.Grow());
    page.add(this.__contactos);
    this.add(page);
  },

  members :
  {
    __contactos : null,


    /**
     * TODOC
     *
     * @param jid {var} TODOC
     * @param nombre {var} TODOC
     * @param estado {var} TODOC
     * @return {void}
     */
    addContacto : function(jid, nombre, estado) {
      this.__contactos.addContacto(jid, nombre, estado);
    },


    /**
     * TODOC
     *
     * @param jid {var} TODOC
     * @return {var} TODOC
     */
    buscarContacto : function(jid) {
      return this.__contactos.buscarContacto(jid);
    },


    /**
     * TODOC
     *
     * @param jid {var} TODOC
     * @param nombre {var} TODOC
     * @return {var} TODOC
     */
    addConversacion : function(jid, nombre)
    {
      var conversacion = this.buscarConversacion(jid);

      if (conversacion == null)
      {
        var conversacion = new jabber.Conversacion(jid, nombre);

        conversacion.addListener("enviarMensaje", function(mensaje) {
          this.fireDataEvent("enviarMensaje", mensaje.getData());
        }, this);

        this.add(conversacion);
      }

      return conversacion;
    },


    /**
     * TODOC
     *
     * @param conversacion {var} TODOC
     * @return {void}
     */
    focusConversacion : function(conversacion)
    {
      if (conversacion != null)
      {
        var arraypage = new Array();
        arraypage[0] = conversacion;
        this.setSelection(arraypage);
      }
    },


    /**
     * TODOC
     *
     * @param jid {var} TODOC
     * @return {var | null} TODOC
     */
    buscarConversacion : function(jid)
    {
      var pages = this.getChildren();

      for (var i in pages)
      {
        if (pages[i]['basename'] == "Conversacion")
        {
          if (pages[i].getJID() == jid) {
            return pages[i];
          }
        }
      }

      return null;
    },


    /**
     * TODOC
     *
     * @param mensaje {var} TODOC
     * @return {void}
     */
    nuevoMensaje : function(mensaje)
    {
      console.log("mensaje en mainwin");
      var contacto = this.__contactos.buscarContacto(mensaje.jid);
      var conversacion = this.buscarConversacion(contacto.getJid());

      if (conversacion == null) {
        conversacion = this.addConversacion(contacto.getJid(), contacto.getNombre());
      }

      conversacion.addMsg(mensaje.jid, mensaje.mensaje);
    }
  }
});